﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CajaChica.Clases;
using CajaChica.Interfaces;
namespace CajaChica.Formularios
{
    public partial class frmOperacionesCheques : CajaChica.Formularios.frmMaestro
    {
        clsCheques objCheque;
        clsPersona objPersona;
        public frmOperacionesCheques()
        {
            InitializeComponent();
        }

        private void frmCheques_Load(object sender, EventArgs e)
        {
            objCheque = new clsCheques();
            objPersona = new clsPersona();
            cboBanco.DataSource = objCheque.CargarBancos();
            cboBanco.DisplayMember = "rs";
            cboBanco.ValueMember = "id";
            grdListado.AutoGenerateColumns = false;
            grdListado.DataSource = objCheque.CargarDatosGridView();
            this.AsignarPropiedadesGrid();
            this.txtMotivo.CharacterCasing = CharacterCasing.Upper;
            cboPersona.DataSource = objPersona.CargarDatosComboBox();
            cboPersona.DisplayMember = "RAZON_SOCIAL";
            cboPersona.ValueMember = "CODIGO";
            dtFecha.Format = DateTimePickerFormat.Custom;
            dtFecha.CustomFormat = "dd/MM/yyyy hh:mm:ss";
        }

        public void Imprimir()
        {
            
        }

        public void Limpiar()
        {
            this.cboBanco.SelectedIndex = -1;
            this.dtFecha.Text = "";
            this.txtMonto.Text = "0";
            this.txtMotivo.Text = "";
            this.txtNumero.Text = "0";
            this.txtSerie.Text = "0";
            this.cboMoneda.SelectedIndex = -1;
        }

        public void AsignarPropiedadesGrid()
        {
            grdListado.AutoGenerateColumns = false;
            grdListado.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            grdListado.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            grdListado.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            grdListado.Columns[0].DataPropertyName = "BANCO";
            grdListado.Columns[1].DataPropertyName = "FECHA";
            grdListado.Columns[2].DataPropertyName = "A_LA_ORDEN_DE";
            grdListado.Columns[3].DataPropertyName = "MONTO";
            grdListado.Columns[4].DataPropertyName = "MONEDA";
            grdListado.Columns[5].DataPropertyName = "MOVIMIENTO";
            grdListado.Columns[6].DataPropertyName = "ID";
            grdListado.Columns[3].DefaultCellStyle.Format = "N2";
            grdListado.Columns[0].Width = 150; //Banco
            grdListado.Columns[1].Width = 75; //Fecha de emision de cheque
            grdListado.Columns[2].Width = 160; //Proveedor
            grdListado.Columns[3].Width = 70; //Monto
            grdListado.Columns[4].Width = 50; //Moneda
            grdListado.Columns[5].Width = 80; //Tipo de operacion
        }

        private void sbpNuevo_Click(object sender, EventArgs e)
        {
            stcMaestro.SelectedTab = stiRegistro;
            lblTipoMovimiento.Text = "INGRESO";
            this.Limpiar();
            this.cboBanco.Select();
        }

        private void btnNuevoGuardar_Click(object sender, EventArgs e)
        {
            objCheque = new clsCheques();
            frmPrincipal principal = new frmPrincipal();
            //USUARIO = principal.getIdUsuario();
            if (cboMoneda.SelectedIndex == 0)
            {
                objCheque.Guardar(
                int.Parse(cboBanco.SelectedValue.ToString()),
                DateTime.Parse(String.Format("{0:F}",dtFecha.Text)),
                int.Parse(txtSerie.Text),
                int.Parse(txtNumero.Text),
                int.Parse(cboPersona.SelectedValue.ToString()),
                decimal.Parse(txtMonto.Text),
                txtMotivo.Text.Trim(),
                "S",
                lblTipoMovimiento.Text,
                int.Parse(principal.getIdUsuario()));
            }
            if (cboMoneda.SelectedIndex == 1)
            {
                objCheque.Guardar(
                    int.Parse(cboBanco.SelectedValue.ToString()),
                    DateTime.Parse(dtFecha.Text),
                    int.Parse(txtSerie.Text),
                    int.Parse(txtNumero.Text),
                    int.Parse(cboPersona.SelectedValue.ToString()),
                    decimal.Parse(txtMonto.Text),
                    txtMotivo.Text.Trim(),
                    "D",
                    lblTipoMovimiento.Text,
                    int.Parse(principal.getIdUsuario()));
            }
            
            this.Limpiar();
            this.grdListado.DataSource = objCheque.CargarDatosGridView();
            this.stcMaestro.SelectedTab = stiListado;
            this.sbMantenimiento.ExpandedPanel = sbpVer;
        }

        private void btnNuevoCancelar_Click(object sender, EventArgs e)
        {
            sbMantenimiento.ExpandedPanel = sbpVer;
            this.Limpiar();
            this.stcMaestro.SelectedTab = stiListado;
        }

        private void btnNuevoLimpiar_Click(object sender, EventArgs e)
        {
            
            //MessageBox.Show(String.Format("{0:G}", dtFecha.Value.ToString()));
            this.Limpiar();
        }

        private void sbpModificar_Click(object sender, EventArgs e)
        {
            stcMaestro.SelectedTab = stiRegistro;
            lblTipoMovimiento.Text = "EGRESO";
            this.Limpiar();
            this.cboBanco.Select();
        }

        private void btnModificarCancelar_Click(object sender, EventArgs e)
        {
            sbMantenimiento.ExpandedPanel = sbpVer;
            this.Limpiar();
            this.stcMaestro.SelectedTab = stiListado;
        }

        private void btnModificarSeleccionar_Click(object sender, EventArgs e)
        {
            this.Limpiar();
        }

        private void btnModificarGuardarCambios_Click(object sender, EventArgs e)
        {
            objCheque = new clsCheques();
            frmPrincipal principal = new frmPrincipal();
            clsArchivoConfiguracion conf = new clsArchivoConfiguracion();
            if (cboMoneda.SelectedIndex == 0)
            {
                try
                {
                    objCheque.Guardar(
                    int.Parse(cboBanco.SelectedValue.ToString()),
                    DateTime.Parse(dtFecha.Text),
                    int.Parse(txtSerie.Text),
                    int.Parse(txtNumero.Text),
                    int.Parse(cboPersona.SelectedValue.ToString()),
                    decimal.Parse(txtMonto.Text),
                    txtMotivo.Text.Trim(),
                    "S",
                    lblTipoMovimiento.Text,
                    int.Parse(conf.LeerCodigoUsuario().ToString()));
                    MessageBox.Show("SE GUARDARON LOS CAMBIOS", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("SE PRODUJO UN ERROR AL GUARDAR LOS CAMBIOS", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            if (cboMoneda.SelectedIndex == 1)
            {
                try
                {
                    objCheque.Guardar(
                        int.Parse(cboBanco.SelectedValue.ToString()),
                        DateTime.Parse(dtFecha.Text),
                        int.Parse(txtSerie.Text),
                        int.Parse(txtNumero.Text),
                        int.Parse(cboPersona.SelectedValue.ToString()),
                        decimal.Parse(txtMonto.Text),
                        txtMotivo.Text.Trim(),
                        "D",
                        lblTipoMovimiento.Text,
                        int.Parse(conf.LeerCodigoUsuario().ToString()));
                    MessageBox.Show("SE GUARDARON LOS CAMBIOS", "SISTEMA DE CAJA CHICA",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("SE PRODUJO UN ERROR AL GUARDAR LOS CAMBIOS", "SISTEMA DE CAJA CHICA",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            this.Limpiar();
            this.grdListado.DataSource = objCheque.CargarDatosGridView();
            this.stcMaestro.SelectedTab = stiListado;
            this.sbMantenimiento.ExpandedPanel = sbpVer;
        }

        private void btnEliminarEliminar_Click(object sender, EventArgs e)
        {
            String descripcion;
            int codigo, posicion;
            DateTime fecha;
            posicion = grdListado.CurrentRow.Index;
            codigo = Convert.ToInt32(grdListado.CurrentRow.Cells[6].Value);
            descripcion = grdListado.CurrentRow.Cells[0].Value.ToString();
            fecha = DateTime.Parse(grdListado.CurrentRow.Cells[1].Value.ToString());
            DialogResult respuesta;
            respuesta = MessageBox.Show("DESEA ELIMINAR EL SIGUIENTE REGISTRO?" +
                "\nCódigo = " + codigo +
                "\nDescripcion = " + descripcion,
                "SISTEMA DE CAJA",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Question);
            if (respuesta == DialogResult.Yes)
            {
                clsCheques cheque = new clsCheques();
                cheque.Eliminar(codigo);
                grdListado.DataSource = cheque.CargarDatosGridView();
                //grdListado.Rows[posicion - 1].Selected = true;
                //grdListado.CurrentCell = grdListado.Rows[posicion - 1].Cells[0];
            }
        }

        private void btnNuevoSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnModificarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnEliminarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnVerSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnVerImprimir_Click(object sender, EventArgs e)
        {
            MessageBox.Show("LA SECCION DE REPORTES AUN NO ESTA DISPONIBLE", 
                "SISTEMA DE CAJA CHICA", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}
